home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / float.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-01-18  |  4.2 KB  |  186 lines

  1. /* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
  2. #if __SC__ || __RCC__
  3. #pragma once
  4. #endif
  5.  
  6. #ifndef __FLOAT_H
  7. #define __FLOAT_H 1
  8.  
  9. #if __cplusplus
  10. extern "C" {
  11. #endif
  12.  
  13. /* Define _CRTAPI1 (for compatibility with the NT SDK) */
  14. #ifndef _CRTAPI1
  15. #define _CRTAPI1 __cdecl
  16. #endif
  17.  
  18. /* Define _CRTAPI2 (for compatibility with the NT SDK) */
  19. #ifndef _CRTAPI2
  20. #define _CRTAPI2 __cdecl
  21. #endif
  22.  
  23. /* Define CRTIMP */
  24. #ifndef _CRTIMP
  25. #if defined(_WIN32) && defined(_DLL)
  26. #define _CRTIMP  __declspec(dllimport)
  27. #else
  28. #define _CRTIMP
  29. #endif
  30. #endif
  31.  
  32. #if __OS2__ && __INTSIZE == 4
  33. #define __CLIB    __stdcall
  34. #else
  35. #define __CLIB    __cdecl
  36. #endif
  37.  
  38. #define    DBL_DIG        15
  39. #define DBL_EPSILON    0x1p-52
  40. #define DBL_MANT_DIG    53
  41. #define DBL_MAX_10_EXP    308
  42. #define    DBL_MAX_EXP    1024
  43. #define DBL_MIN_10_EXP    -307
  44. #define    DBL_MIN_EXP    -1021
  45.  
  46. #define DBL_MAX     0x1.FFFFFFFFFFFFFp1023
  47. #define DBL_MIN     0x1p-1022
  48. #define FLT_MAX     0x1.FFFFFEp+127
  49. #define FLT_MIN     0x1p-126
  50.  
  51. #define    FLT_DIG        6
  52. #define FLT_EPSILON    0x1p-23    /* 1.19209290e-7f */
  53. #define FLT_MANT_DIG    24
  54. #define FLT_MAX_10_EXP    38
  55. #define    FLT_MAX_EXP    128
  56. #define FLT_MIN_10_EXP    -37
  57. #define    FLT_MIN_EXP    -125
  58. #define    FLT_RADIX    2
  59.  
  60. extern int __CLIB __flt_rounds(void);
  61. #define    FLT_ROUNDS    (__flt_rounds())
  62.  
  63. #if _WIN32
  64. #define    LDBL_DIG    18
  65. #define LDBL_EPSILON    0x1p-63L
  66. #define LDBL_MANT_DIG    64
  67. #define LDBL_MAX    0x1.FFFFFFFFFFFFFFFEp+16383L
  68. #define LDBL_MAX_10_EXP    4932
  69. #define    LDBL_MAX_EXP    16383
  70. #define LDBL_MIN    0x1p-16382L
  71. #define LDBL_MIN_10_EXP    -4932
  72. #define    LDBL_MIN_EXP    -16382
  73. #else
  74. #define    LDBL_DIG    DBL_DIG
  75. #define LDBL_EPSILON    DBL_EPSILON
  76. #define LDBL_MANT_DIG    DBL_MANT_DIG
  77. #define LDBL_MAX    DBL_MAX
  78. #define LDBL_MAX_10_EXP    DBL_MAX_10_EXP
  79. #define    LDBL_MAX_EXP    DBL_MAX_EXP
  80. #define LDBL_MIN    DBL_MIN
  81. #define LDBL_MIN_10_EXP    DBL_MIN_10_EXP
  82. #define    LDBL_MIN_EXP    DBL_MIN_EXP
  83. #endif
  84.  
  85. #ifndef __STDC__
  86.  
  87. extern int __cdecl _8087;
  88. unsigned    __CLIB _status87(void);
  89. unsigned    __CLIB _clear87(void);
  90. unsigned    __CLIB _control87(unsigned, unsigned);
  91. void        __CLIB _fpreset(void);
  92.  
  93. #define _MCW_EM     0x003f
  94. #define _EM_INVALID    0x0001        
  95. #define _EM_DENORMAL    0x0002        
  96. #define _EM_ZERODIVIDE    0x0004        
  97. #define _EM_OVERFLOW    0x0008        
  98. #define _EM_UNDERFLOW    0x0010        
  99. #define _EM_INEXACT    0x0020    
  100.  
  101. #define _MCW_IC     0x1000
  102. #define _IC_AFFINE    0x1000        
  103. #define _IC_PROJECTIVE    0x0000
  104.  
  105. #define _MCW_RC     0x0c00
  106. #define _RC_CHOP    0x0c00    
  107. #define _RC_UP        0x0800        
  108. #define _RC_DOWN    0x0400
  109. #define _RC_NEAR    0x0000        
  110.  
  111. #define _MCW_PC     0x0300
  112. #define _PC_24        0x0000        
  113. #define _PC_53        0x0200        
  114. #define _PC_64        0x0300        
  115.  
  116. #define _CW_DEFAULT (_RC_NEAR | _IC_AFFINE | _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT | _PC_64)
  117.  
  118. #endif
  119.  
  120. #if _WIN32
  121. #define DECIMAL_DIG    19
  122. #else
  123. #define DECIMAL_DIG    17
  124. #endif
  125.  
  126. /*  Floating point error signals and return codes */
  127. #define _FPE_DENORMAL 0x82
  128. #define _FPE_ZERODIVIDE 0x83
  129. #define _FPE_UNEMULATED 0x87
  130. #define _FPE_UNDERFLOW  0x85
  131. #define _FPE_STACKUNDERFLOW 0x8b
  132. #define _FPE_STACKOVERFLOW  0x8a
  133. #define _FPE_SQRTNEG 0x88
  134. #define _FPE_OVERFLOW  0x84
  135. #define _FPE_INVALID  0x81
  136. #define _FPE_INEXACT 0x86
  137. #define _FPE_EXPLICITGEN    0x8c    /* occurs on an explicit raise */
  138.  
  139. /* Non-ANSI Names */
  140. #if !__STDC__
  141.  
  142. #define MCW_EM _MCW_EM
  143. #define EM_INVALID _EM_INVALID
  144. #define EM_DENORMAL _EM_DENORMAL
  145. #define EM_ZERODIVIDE _EM_ZERODIVIDE
  146. #define EM_OVERFLOW _EM_OVERFLOW
  147. #define EM_UNDERFLOW _EM_UNDERFLOW
  148. #define EM_INEXACT _EM_INEXACT
  149.  
  150. #define MCW_IC _MCW_IC
  151. #define IC_AFFINE _IC_AFFINE
  152. #define IC_PROJECTIVE _IC_PROJECTIVE
  153.  
  154. #define MCW_RC _MCW_RC
  155. #define RC_CHOP _RC_CHOP
  156. #define RC_UP _RC_UP
  157. #define RC_DOWN _RC_DOWN
  158. #define RC_NEAR _RC_NEAR
  159.  
  160. #define MCW_PC        _MCW_PC
  161. #define PC_24 _PC_24
  162. #define PC_53 _PC_53
  163. #define PC_64 _PC_64
  164.  
  165. #define CW_DEFAULT    _CW_DEFAULT
  166.  
  167. #define FPE_DENORMAL _FPE_DENORMAL
  168. #define FPE_ZERODIVIDE _FPE_ZERODIVIDE 
  169. #define FPE_UNEMULATED _FPE_UNEMULATED
  170. #define FPE_UNDERFLOW _FPE_UNDERFLOW
  171. #define FPE_STACKUNDERFLOW _FPE_STACKUNDERFLOW
  172. #define FPE_STACKOVERFLOW  _FPE_STACKOVERFLOW
  173. #define FPE_SQRTNEG  _FPE_SQRTNEG
  174. #define FPE_OVERFLOW _FPE_OVERFLOW
  175. #define FPE_INVALID _FPE_INVALID
  176. #define FPE_INEXACT _FPE_INEXACT
  177. #define FPE_EXPLICITGEN     _FPE_EXPLICITGEN
  178.  
  179. #endif
  180.  
  181. #if __cplusplus
  182. }
  183. #endif
  184.  
  185. #endif
  186.